from typing import Optional
from pydantic import BaseModel
from models.user_models import Gender
from schemas.user_schemas import UserCreate,UserUpdate

class WorkerCreate(UserCreate):
    """
    医护人员创建请求模型
    包含创建医护人员账户所需的所有基本信息
    """

    phone_number: str #
    department: str #

    def check(self):
        """
        验证字段是否符合要求
        如果不符合则抛出ValueError
        """
        super().check()
        if not 0 < len(self.phone_number) < 20:
            raise ValueError("电话号码长度必须在1到20个字符之间")
        if not 0 < len(self.department) < 100:
            raise ValueError("部门名称长度必须在1到100个字符之间")



class WorkerUpdate(UserUpdate):
    """
    工作人员信息更新请求模型
    所有字段都是可选的，只更新提供的字段
    """

    phone_number: Optional[str] = None #
    department: Optional[str] = None #

    def check(self):
        """
        验证提供的字段是否符合要求
        如果不符合则抛出ValueError
        """
        super().check()
        if self.phone_number is not None and not 0 < len(self.phone_number) < 20:
            raise ValueError("电话号码长度必须在1到20个字符之间")
        if self.department is not None and not 0 < len(self.department) < 100:
            raise ValueError("部门名称长度必须在1到100个字符之间")